// pages/medicalReport/medicalReport.js
import api from '../../utils/api'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    reportList: [],
    isEmpty: false,
    //（用来控制显示哪个按钮） false表示还没首次进行弹框授权，或者已经授权了；true表示在首次授权弹框时拒绝授权，或者在设置页面还是拒绝了授权
    isAuthSavePhoto: false,
    pageNum: 1,
    totalPage: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.healthReportList()
  },

  /**
  //  * 生命周期函数--监听页面显示
  //  */
  // onShow: function () {
  //   this.onLoad()
  // },


  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (this.data.pageNum * 1 < this.data.totalPage * 1) {
      this.setData({
        pageNum: this.data.pageNum + 1
      }, () => {
        this.healthReportList()
      })
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  healthReportList() {
    const that = this
    // console.log(wx.getStorageSync('mobile'))
    api.healthReportList({
      data: {
        pageNum: 1,
        pageSize: 10,
        mobile: wx.getStorageSync('mobile')
      },
      success: res => {
        if (res.code * 1 === 0) {
          console.log(res)
          if (res.data.dataList.length * 1 === 0) {
            that.setData({
              isEmpty: true
            })
            return
          }
          that.setData({
            reportList: [...this.data.reportList, ...res.data.dataList],
            totalPage: res.data.totalPage,
            isEmpty: false
          })
        }
      }
    })
  },
  onSaveToPhone(e) {
    let url = e.currentTarget.dataset.url || []

    this.getSetting().then((res) => {
      // 判断用户是否授权了保存到本地的权限
      if (!res.authSetting['scope.writePhotosAlbum']) {
        this.authorize().then(() => {
          url.forEach(item => {
            this.savedownloadFile(item)
          })
          this.setData({
            isAuthSavePhoto: false
          })
        }).catch(() => {
          wx.showToast({
            title: '您拒绝了授权',
            icon: 'none',
            duration: 1500
          })
          this.setData({
            isAuthSavePhoto: true
          })
        })
      } else {
        url.forEach(item => {
          this.savedownloadFile(item)
        })
      }
    })
  },
  //打开设置，引导用户授权
  onOpenSetting() {
    wx.openSetting({
      success: (res) => {
        console.log(res.authSetting)
        if (!res.authSetting['scope.writePhotosAlbum']) {
          wx.showToast({
            title: '您未授权',
            icon: 'none',
            duration: 1500
          })
          this.setData({ // 拒绝授权
            isAuthSavePhoto: true
          })

        } else { // 接受授权
          this.setData({
            isAuthSavePhoto: false
          })
          this.onSaveToPhone() // 接受授权后保存图片
        }

      }
    })

  },
  // 获取用户已经授予了哪些权限
  getSetting() {
    return new Promise((resolve, reject) => {
      wx.getSetting({
        success: res => {
          resolve(res)
        }
      })
    })
  },
  // 发起首次授权请求
  authorize() {
    return new Promise((resolve, reject) => {
      wx.authorize({
        scope: 'scope.writePhotosAlbum',
        success: () => {
          resolve()
        },
        fail: res => { //这里是用户拒绝授权后的回调
          console.log('拒绝授权')
          reject()
        }
      })
    })
  },
  savedownloadFile(img) {
    this.downLoadFile(img).then((res) => {
      return this.saveImageToPhotosAlbum(res.tempFilePath)
    }).then(() => {})
  },
  //单文件下载(下载文件资源到本地)，客户端直接发起一个 HTTPS GET 请求，返回文件的本地临时路径。
  downLoadFile(img) {
    return new Promise((resolve, reject) => {
      wx.downloadFile({
        url: img,
        success: (res) => {
          console.log('downloadfile', res)
          resolve(res)
        }
      })
    })
  },
  // 保存图片到系统相册
  saveImageToPhotosAlbum(saveUrl) {
    return new Promise((resolve, reject) => {
      wx.saveImageToPhotosAlbum({
        filePath: saveUrl,
        success: (res) => {
          wx.showToast({
            title: '保存成功,请去手机相册浏览',
            duration: 1000,
          })
          resolve()
        }
      })
    })
  },
  // 弹出模态框提示用户是否要去设置页授权
  showModal() {
    wx.showModal({
      title: '检测到您没有打开保存到相册的权限，是否前往设置打开？',
      success: (res) => {
        if (res.confirm) {
          console.log('用户点击确定')
          this.onOpenSetting() // 打开设置页面          
        } else if (res.cancel) {
          console.log('用户点击取消')
        }
      }
    })
  }
})